/**
 * 阡陌时空内部使用JS， 配合后台框架使用。
 * jinglupeng@hotmail.com
 * 2014-02-21
 */
(function(window, $) {

	/**
	 * 判断是否有jQuery
	 */
	if (!$) {
		alert("jQuery is needed!");
	}

	/**
	 * 检查在 全局域中是否有重名属性
	 */
	if (window.qmsk) {
		alert("在 window 域中已经定义了 qmsk！");
	}

	/**
	 * Qmsk 对象
	 */
	function Qmsk() {
	}

	/**
	 * 原型的缩写，简化使用
	 */
	var qm = Qmsk.prototype;

	function initSelect(options) {
		ajax(options.method, options.url, options.data, function(message) {
			//获取对象
			var $select = $("#" + options.id);
			//清空旧值
			$select.empty();
			//初始化默认值
			if (options.defaults) {
				var ldefaults = options.defaults;
				var $option = $("<option checked='checked'>" + ldefaults.key + "</option>");
				if (ldefaults.value) {
					$option.val(ldefaults.value);
				}
				$select.append($option);
			}
			//加载数据
			var len = message.result.data.length;
			for (var i = 0; i < len; i++) {
				var value = getHtmlString(getHeadIndexValue(i, message, options.heads[0]));
				var key = getHtmlString(getHeadIndexValue(i, message, options.heads[1]));
				var $option = "<option value='" + value + "' >" + key + "</option>";
				$select.append($option);
			}
		});
	}

	/**
	 * GET 请求
	 *
	 * @param {string} url 请求的地址
	 * @param {object} data 请求的参数，可选
	 * @param {function} success 返回成功后的回调函数
	 */
	function get(url, data, success) {
		if (arguments.length == 2) {
			ajax("GET", arguments[0], {}, arguments[1]);
		} else {
			ajax("GET", arguments[0], arguments[1], arguments[2]);
		}

	}

	/**
	 * POST 请求
	 *
	 * @param {string} url 请求的地址
	 * @param {object} data 请求的参数，可选
	 * @param {function} success 返回成功后的回调函数
	 */
	function post(url, data, success) {

		if (arguments.length == 2) {
			ajax("POST", arguments[0], {}, arguments[1]);
		} else {
			ajax("POST", arguments[0], arguments[1], arguments[2]);
		}
	}

	/**
	 * 私有函数，发送 AJAX 请求，包括 GET 方法和 POST 方法。
	 */
	function ajax(methodType, url, data, success) {
		// 1, 确认方法
		var method = $.get;
		if (methodType === "POST") {
			method = $.post;
		}
		// 2, 调用方法
		method(url, data, function(message) {
			if (IsEmpty(message)) {
				alert('没有查询到数据');
				return;
			}
			if (message.state === 0) {
				// 请求成功后调用回调函数
				success(message);
			} else if (message.state == 1) {
				art.dialog({
					fixed : true,
					lock : true,
					content : message.msg,
					icon : 'error',
					ok : true
				});
			} else {
				checkStateShowErrorMsgAndDealResult(JSON.stringify(message));
			}
		}, "JSON");
	}

	/**
	 * 使用匿名函数域来封装 新的组件
	 */
	(function() {

		function dataTable() {
			alert('dataTable');
		}


		qm.dataTable = dataTable;
	})();

	qm.initSelect = initSelect;
	qm.get = get;
	qm.post = post;
	var qmsk = new Qmsk();
	window.qmsk = qmsk;
})(window, jQuery);

